WE
suporte scripts

(resolvido) alguém pode criar uma spell a partir dessa action por favor?

Por wevertonvrb, 05 de dez. de 2016 em Resolvidos

criar spell
action/spell
otserv
25
8.8k
zipter98Z
09 de dezembro de 2016 às 03:05

Ah, eu programei apenas para Castforms de jogadores.

Vou editar para os selvagens também.

 

Pronto, editado para Castforms selvagens.

Editado Dezembro 9 por zipter98

wevertonvrbW
09 de dezembro de 2016 às 04:29
21 horas atrás, zipter98 disse:

Ah, eu programei apenas para Castforms de jogadores.

Vou editar para os selvagens também.

 

Pronto, editado para Castforms selvagens.

 

 

 

aqui esta o script

Spoiler

elseif spell == "Transform" then

    local config = {

        forms = {"Castform", "Fire Castform", "Water Castform", "Ice Castform"},    --Formas, na ordem de transformação.

        effects = {

            ["water"] = 18,                                                        --["elemento_primário_da_nova_forma"] = efeito_na_transformação,

            ["ice"] = 18,

            ["fire"] = 18,

        }

    }

    

    local function fakeEvolution(cid, newPoke, pokeball)

        local owner = getCreatureMaster(cid)

        if not owner then return true end

        local description = "Contains a "..newPoke.."."

        local pct = getCreatureHealth(cid) / getCreatureMaxHealth(cid)

        doItemSetAttribute(pokeball, "hp", pct)

        doItemSetAttribute(pokeball, "poke", newPoke)

        doItemSetAttribute(pokeball, "morta", "no")

        doItemSetAttribute(pokeball, "Icone", "yes")    

        doItemSetAttribute(pokeball, "description", "Contains a "..newPoke..".")

        doSendMagicEffect(getThingPos(cid), config.effects[pokes[newPoke].type] or 18)

        doTransformItem(pokeball, icons[getItemAttribute(pokeball, "poke")].use)

        doTransformItem(getPlayerSlotItem(owner, 7).uid, fotos[newPoke])

        local oldpos, oldlod, health_percent_lost = getThingPos(cid), getCreatureLookDir(cid), (getCreatureMaxHealth(cid) - getCreatureHealth(cid)) * 100 / getCreatureMaxHealth(cid)

        doRemoveCreature(cid)

        doSummonMonster(owner, newPoke)

        local pk = getCreatureSummons(owner)[1]

        doTeleportThing(pk, oldpos, false)

        doCreatureSetLookDir(pk, oldlod)

        adjustStatus(pk, pokeball, true, false)

        doCreatureAddHealth(pk, -(health_percent_lost * getCreatureMaxHealth(pk) / 100))

        if useKpdoDlls then

            doUpdateMoves(owner)

        end

    end

    

    table.find = function (table, value)

        for i, v in pairs(table) do

            if(v == value) then

                return i

            end

        end

        return nil

    end

        

    if not isInArray(config.forms, getCreatureName(cid)) then return true end

    

    local next_form = config.forms[table.find(config.forms, getCreatureName(cid)) + 1]

    if not next_form then next_form = config.forms[1] end

    

    if not isSummon(cid) then

        local pos, dir, health_percent_lost = getThingPos(cid), getCreatureLookDir(cid), (getCreatureMaxHealth(cid) - getCreatureHealth(cid)) * 100 / getCreatureMaxHealth(cid)

        doRemoveCreature(cid)

        

        local newMonster = doCreateMonster(next_form, pos)

        

        adjustWildPoke(newMonster)

        doCreatureSetLookDir(newMonster, dir)

        doCreatureAddHealth(newMonster, -(health_percent_lost * getCreatureMaxHealth(newMonster) / 100))

    else

        local p = getPlayerSlotItem(getCreatureMaster(cid), 8):

        if not p then return true

        end ------- coloquei este end

        

        fakeEvolution(cid, next_form, p.uid)

    end

bom agora deu 2 erros mas nenhum na distro

 

PRIMEIRO se meu pokemon tiver com 95% da vida total quando eu tranformar ele perde + 5% da vida ficando com 90% e se eu transformar novamente ele perde mais 10%

ou seja transformar esta tendo um custo de vida e esse custo é a % de vida ja perdida ou seja se meu pokemon tiver com 50% de vida ou menos e eu transformar ele morre.

 

SEGUNDO os pokemons selvagens quando se transforma recupera 100% de sua vida 

 

 

EDIT: consegui arrumar o primeiro bug trocando ISSO >> doCreatureAddHealth(pk, -(health_percent_lost * getCreatureMaxHealth(pk) / 100))

POR ISSO >> doCreatureAddHealth(pk, health_percent_lost)

 

AGORA FALTA ARRUMAR O SEGUNDO BUG ONDE OS POKES SELVAGENS RESTALRA 100% DA VIDA

Editado Dezembro 10 por wevertonvrb

zipter98Z
10 de dezembro de 2016 às 16:36

Não imaginei que meses sem programar de fato desfariam meu conhecimento em bases poketibianas. Havia esquecido completamente a estrutura das funções de evolução e ajustes de status no PDA.

Enfim, editei meu comentário que continha o código com ambas as correções.

Editado Dezembro 10 por zipter98

wevertonvrbW
11 de dezembro de 2016 às 02:52
Em 09/12/2016 at 03:05, zipter98 disse:

Ah, eu programei apenas para Castforms de jogadores.

Vou editar para os selvagens também.

 

Pronto, editado para Castforms selvagens.

corrigiu os erros anteriores porem surgiu mais um erro.

o castform selvagem esta ficando com apenas 1 quarto da vida dos outros ou seja se todos os castform tem 200k de vida total o castform normal esta ficando com apenas 50k de vida total n sei o motimo mas sem a alteração a vida fica igual

 

zipter98Z
11 de dezembro de 2016 às 20:57

Eu acabei de testar o código, e está funcionando como devido (se há alguma discrepância na variação de HP, não passa de 10).

A vida da nova forma é proporcional a da anterior. 

Porém, se o que você quer dizer é que as formas estão com vida total e o Castform normal está perdendo HP, significa que há algum erro no seu código. Se for o caso, peço que poste-o aqui.

wevertonvrbW
11 de dezembro de 2016 às 21:15
23 minutos atrás, zipter98 disse:

Eu acabei de testar o código, e está funcionando como devido (se há alguma discrepância na variação de HP, não passa de 10).

A vida da nova forma é proporcional a da anterior. 

Porém, se o que você quer dizer é que as formas estão com vida total e o Castform normal está perdendo HP, significa que há algum erro no seu código. Se for o caso, peço que poste-o aqui.

obrigado resolvido o erro estava no wild lvl ja corrigi rep + man sou teu fan quero aprender a programar sabe de uns bons tutoriais?

ou sera q quer ser meu proff? rsrs abraço

 

 

 

 

Editado Dezembro 11 por wevertonvrb

zipter98Z
11 de dezembro de 2016 às 21:24

Ah, Lua é bem fácil de aprender. Tem tutoriais por toda a internet (aqui no XTibia, inclusive, tem vários). Basta estudá-los, ler códigos de outras pessoas e praticar. Principalmente praticar.

Editado Dezembro 12 por zipter98

zipter98Z
12 de dezembro de 2016 às 19:56

ah, agora tem double post? antigamente os comentários se juntavam wtf

Editado Dezembro 12 por zipter98

PoccnnP
12 de dezembro de 2016 às 20:24

@zipter98 existe um tempo necessário para fundir às respostas. No seu caso, esse tempo foi demasiado.

PoccnnP
12 de dezembro de 2016 às 20:25

Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Suporte Otserv > Otserv > Pedidos e Dúvidas Resolvidos.